package com.xiaoxu.intranetweb.mybatisplusSzappdb.timerTasks;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaoxu.intranetweb.dom4jUtil.config.SystemConfigEditer;
import com.xiaoxu.intranetweb.dom4jUtil.config.SystemConfigReader;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.business.product.PdtAuthBu;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.business.truck.TruckCallZxBu;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.business.weightSheets.WeightSheetsBu;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.business.weightSheets.WeightSheetsTimeImprove;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.entity.SysDic;
import com.xiaoxu.intranetweb.mybatisplusSzappdb.service.ISysDicService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Arrays;
@Component
@Slf4j
public class TruckQueueZxTask {
//    车辆排队执行
    @Autowired
    private TruckCallZxBu truckCallZxBu;
    @Autowired
    private ISysDicService sysDicService;
    @Autowired
    private SystemConfigReader systemConfigReader;
    @Autowired
    private PdtAuthBu pdtAuthBu;
    @Autowired
    private WeightSheetsBu  weightSheetsBu;
    @Autowired
    private SystemConfigEditer systemConfigEditer;
    @Autowired
    private WeightSheetsTimeImprove weightSheetsTimeImprove;
    //@Autowired
    //private TAshgateHghtRecordServiceImpl tAshgateHghtRecordService;

////    每10秒执行一次叫号
//    @Scheduled(fixedDelay = 60000)
//    public void callNumber() throws Exception {
////        从配置文件读取是本地0还是云端1
////        邹县这边只在本地叫号
//        if(systemConfigReader.isLocalOrCloud().equals("1")){
//             return;
//        }
//        //       3.排队信息的更新
//        try {
//            truckCallZxBu.getTruckQueue();
//        }catch (Exception e){
//            log.error("排队信息更新失败"+e.getMessage()+ Arrays.toString(e.getStackTrace()));
//        }
//        //       3.排队序号的更新：在经理那边处理
//        try {
//            truckCallZxBu.updateTruckQueueNo();
//        }catch (Exception e){
//            log.error("排队序号更新失败"+e.getMessage()+ Arrays.toString(e.getStackTrace()));
//        }
////        处理叫号超时
////        try {
////            truckCallZxBu.handleTimeoutTrucks();
////        } catch (Exception e) {
////            log.error("处理排队超时失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
////        }
//        try {
////        叫号处理
//            //判断是否关闭叫号
//            QueryWrapper<SysDic> queryWrapper = new QueryWrapper<>();
//            queryWrapper.eq("DIC_KEY", "truck_call_stop");
//            SysDic sysDic = sysDicService.getOne(queryWrapper);
//            if (sysDic.getDicVal().equals("0")) {
//                truckCallZxBu.getTruckCallZx();
//            }
//        }catch (Exception e){
//            log.error("排队叫号失败"+e.getMessage()+ Arrays.toString(e.getStackTrace()));
//        }
//
//    }
    //            这里还要判断21.大袋灰、加湿灰、储备库炉渣（每天23:50:00直接就全部给他超时）
//    @Scheduled(cron = "0 50 23 * * ?") // ���天23:50:00执行
//    public void handleTimeoutTrucks2() throws Exception {
//        if(systemConfigReader.isLocalOrCloud().equals("1")){
//            return;
//        }
//    try {
//        truckCallZxBu.handleTimeoutTrucks2();
//    }catch (Exception e){
//        log.error("处理排队超时（大袋灰、加湿灰、储备库炉渣（每天23:50:00直接就全部给他超时）失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
//    }
//    }
//执行扣款15秒执行一次startExecuteDeduction
//@Scheduled(fixedDelay = 20000) // ���分钟执行一次,
//public void startExecuteDeduction() throws Exception {
//    if(systemConfigReader.isLocalOrCloud().equals("1")){
//        return;
//    }
//    try {
//        truckCallZxBu.startExecuteDeduction();
//    } catch (Exception e) {
//        log.error("执行扣款失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
//    }
//}
//
//半个小扫一次是否调价
//    @Scheduled(fixedDelay = 1800000) // 30分钟执行一次,
//    public  void adjustment(){
//        if(systemConfigReader.isLocalOrCloud().equals("1")){
//            return;
//        }
//        try {
//        pdtAuthBu.updatePrices();
//        } catch (Exception e) {
//            log.error("定时自动调价失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
//        }
//    }
//
//
////每天0点执行，打包销售的量如果第二天还有的话，也就是0点在结束时间内，那就重置他的量
//      @Scheduled(cron = "0 0 0 * * ?") // ���天0点执行
//    public  void resetPackageSelling() throws Exception {
//          if(systemConfigReader.isLocalOrCloud().equals("1")){
//              return;
//          }
//              truckCallZxBu.resetPackageSelling();
//      }
//
////      进货类处理，如果进货类单子有竞价啥的遗留数据就清理掉
//    @Scheduled(fixedDelay = 1800000) // 30分钟执行一次,
//    public  void cleaningOfIncomingGoods(){
//        if(systemConfigReader.isLocalOrCloud().equals("1")){
//            return;
//        }
//        try {
//            weightSheetsBu.clearWeightSheet();
//        } catch (Exception e) {
//            log.error("定时处理进货类单子脏数据失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
//        }
//    }
    //    每15分钟执行一次料位历史记录
//    @Scheduled(fixedDelay = 900000) // 15分钟执行一次
//    public void updateTruckPositionHistory() throws Exception {
//        if (systemConfigReader.isLocalOrCloud().equals("1")) {
//            return;
//        }
//        try {
////            tAshgateHghtRecordService.addMaterialLevelHistory();
//        } catch (Exception e) {
//            log.error("料位历史记录失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
//        }
//    }
//
////    每天0点切换公司和电厂
//    @Scheduled(cron = "0 0 0 * * ?") // ���天0点执行
//    public  void switchCompanyAndBattery() {
//            systemConfigEditer.updateSwitchGsOrDc();
//    }
//    完善磅单进厂、出厂等等时间
//    @Scheduled(fixedDelay = 3600000) // 60分钟执行一次, 3600000
//    public  void truckInOutTime() {
////        truckCallZxBu.truckInOutTime();
//        weightSheetsTimeImprove.timeImprove();
//    }
//
    //    每15分钟执行一次料位历史记录
    //@Scheduled(fixedDelay = 900000) // 15分钟执行一次
    //public void updateTruckPositionHistory() throws Exception {
    //    if (systemConfigReader.isLocalOrCloud().equals("1")) {
    //        return;
    //    }
    //    try {
    //        tAshgateHghtRecordService.addMaterialLevelHistory();
    //    } catch (Exception e) {
    //        log.error("料位历史记录失败" + e.getMessage() + Arrays.toString(e.getStackTrace()));
    //    }
    //}
}
